package com.hlkj.pay.app.merchant.ext.impl.icbcpay.dto.req;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Data
public class OrderCreateReq extends HttpRequest {

    /** 商户订单号 */
    private String outTradeNo;      // 商户订单号

    /** 商户编号 */
    private String merchantNo;      // 平台下发的商户编号

    /** 交易金额 (单位：分) */
    private Integer tradeAmount;    // 交易金额

    /** 支付品牌：ALIPAY:支付宝，WXPAY:微信支付，UNIONPAY:银联 */
    private String payBrand;        // 支付品牌

    /** 支付方式类型: JSAPI:JSAPI支付, APP:APP支付, H5:H5支付, NATIVE:Native支付, MICROPAY:付款码支付, MINI_PROGRAM:小程序支付 */
    private String payWayType;      // 支付方式类型

    /** 交易摘要 */
    private String tradeSubject;    // 交易摘要

    /** 扫码类型: MSU-被扫；USM-主扫 */
    private String scanType;        // 扫码类型

    /** 设备号 */
    private String deviceNo;        // 设备号

    /** 终端号 */
    private String terminalNo;      // 终端号

    /** 终端交易流水号 */
    private String terminalTradeNo; // 终端交易流水号

    /** 业务类型 */
    private String bizType;         // 业务类型

    /** 付款码 */
    private String paymentCode;     // 付款码

    /** 异步通知地址 */
    private String notifyUrl;       // 异步通知地址

    /** 请求 IP */
    private String requestIp;       // 请求ip

    /** 扩展信息 (JSON格式字符串) */
    private String extendInfo;      // 扩展信息

    /** 分账类型: P-实时分账; D-延迟分账; N-不分账 */
    private String psType;          // 分账类型

    /** 分账明细 */
    private List<LedgerApplyDetail> ledgerApplyDetail; // 分账明细 (实时分账时必传)

    private static class LedgerApplyDetail {

        /** 分账类型: P-实时分账; D-延迟分账; N-不分账 */
        private String psType;          // 分账类型

        /** 原交易号 (延迟分账时必传) */
        private String originalTradeNo; // 原交易号

        /** 分账子单号，必须保证唯一 */
        private String requestNo;       // 分账子单号

        /** 分账金额 (单位：分) */
        private Integer ledgerAmount;   // 分账金额

        /** 分账接收方 */
        private String ledgerReceiver;  // 分账接收方

        /** 分账描述 */
        private String ledgerSubject;   // 分账描述
    }
}